int * * a[10] 是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/15 00:31:24
还有 int * (*a)[10]和 int(*a[10])()是什么意思?

int* (*a)[10];
a是一个指向包含10个int型指针元素的数组。

比如:
#include <stdio.h>

int main()
{
// 定义数组,包含10个int*
int* b[10];
for(int i = 0; i < 10; ++i)
b[i] = new int(i+1);

int* (*a)[10] = &b; // a指向这个数组

for(int i = 0; i < 10; ++i)
{
printf("%d ", *(*a)[i]); // 输出
delete (*a)[i]; // 释放
}
}

int (*a[10])()
a是一个包含10个元素的数组,这个10个元素的类型是:指向不接受参数,返回int型的函数的指针。

比如:
#include <stdio.h>

#define fun(n)\
int func_##n()\
{\
printf("fun_"#n);\
return n;\
}

fun(1)fun(2)fun(3)fun(4)fun(5)/*定义10个函数*/
fun(6)fun(7)fun(8)fun(9)fun(10)

int main()
{
// 定义数组,包含10个指向这些函数的指针
int (*a[10])() = {&func_1, &func_2, &func_3, &func_4, &func_5,
&func_6, &func_7, &func_8, &fu